In parallel programming computing environments, when parallel programs share access to the same memory locations, this access must be properly managed and synchronized. In some such environments, a transactional memory paradigm may be employed to manage synchronized memory access by threads corresponding to parallel programs. According to a transactional memory approach, threads can speculatively execute transactions without altering the contents of shared memory locations until the transactions subsequently commit. If a conflict is detected between two transactions, one of the transactions may be aborted so that the other transaction can commit, at which time the committed transaction may alter the contents of the shared memory locations.